//#pragma once
//#include<iostream>
//#include<assert.h>
//#include<iomanip>
//using namespace std;
//
//typedef int vecdatatype;
//
//class vec
//{
//public:
//	vecdatatype* data;
//	int size;
//	int capacity;
//
//	void reverse(int n) {
//		if (data == NULL || n <= size)
//			return;
//		capacity = n;
//		data = (vecdatatype*)realloc(data, n * sizeof vecdatatype);
//	}
//
//	vec() {
//		data = NULL;
//		size = 0;
//		capacity = 0;
//	}
//
//	vec(int n) {
//		if (n < 1)
//			n = 1;
//		data = (vecdatatype*)malloc(n * sizeof vecdatatype);
//		memset(data, 0, n * sizeof vecdatatype);
//		size = n;
//		capacity = n;
//	}
//
//	vecdatatype& operator[](int i) {
//		return data[i];
//	}
//
//	void PushBack(int x) {
//		if (data == NULL) {
//			data = (vecdatatype*)malloc(sizeof vecdatatype);
//			data[0] = x;
//			size = 1;
//			capacity = 2;
//			return;
//		}
//		size++;
//		if (size >= capacity)
//			reverse(size << 1);
//		data[size-1] = x;
//	}
//
//	void PopBack() {
//		assert(data != NULL);
//		size--;
//		data = (vecdatatype*)realloc(data, size * sizeof vecdatatype);
//	}
//
//};